/**
 * Copyright (c) 2012, Hakans Pirates - 
 * Johan Andersson spaiki17@gmail.com, 
 * Mattias Lundberg lundberg.mattias@gmail.com, 
 * Samuel Sjodin sjoodin@gmail.com
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the <organization> nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *  
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package pirates.network.messages;

import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.network.AbstractMessage;
import com.jme3.network.serializing.Serializable;

/**
 * used to send info about an entity. If the entity does not exist on the
 * client, it is created.
 * 
 */
@Serializable()
public class EntityMessage extends AbstractMessage {

	public String entityId; // is set if this is a ship
	public int otherEntityId; // is set if this is another kind of entity
	public String entityTeam; // map to Setting.EntityTeam. Specifies which team
								// a player belong to: neutral,pirates, or
								// brittish
	public String entityType; // map to Setting.EntityType, will be used to
								// determine how to construct the entity.
	public float hitpoints;// 0-100.
	public Vector3f position;
	public Quaternion rotation;
	public float velocity;
	public float angularVelocity;
	public long timeStamp = System.currentTimeMillis(); // timestamp from the
														// entity owner (is set
														// during message
														// creation)

	// constructor for ships
	public EntityMessage(String entityId, String entityTeam,
			String entityModel, float hitpoints, Vector3f position,
			Quaternion rotation, float velocity, float angularVelocity) {

		this.entityId = entityId;
		this.entityTeam = entityTeam;
		this.entityType = entityModel;
		this.hitpoints = hitpoints;
		this.position = position;
		this.rotation = rotation;
		this.velocity = velocity;
		this.angularVelocity = angularVelocity;
	}

	public void setTimeStamp(long timeStamp) {
		this.timeStamp = timeStamp;
	}
	//
	//
	//
	// //constructor for non-ships
	// public EntityMessage(
	// int otherEntityId,
	// String entityTeam,
	// String entityType,
	// float hitpoints,
	// Vector3f position,
	// Quaternion rotation,
	// Vector3f velocity,
	// Vector3f angularVelocity) {
	//
	// this.otherEntityId = otherEntityId;
	// this.entityTeam = entityTeam;
	// this.entityType = entityType;
	// this.hitpoints = hitpoints;
	// this.position = position;
	// this.rotation = rotation;
	// this.velocity = velocity;
	// this.angularVelocity = angularVelocity;
	// }

	public EntityMessage() {
	}
}
